package cn.jinbyte.web.annotation;

import cn.jinbyte.web.model.ApiLogType;
import cn.jinbyte.web.model.LogInclude;

import java.lang.annotation.*;

/**
 * 接口日志注解，用于标注接口是否需要记录日志
 *
 * @author jintingying
 * @since 1.0
 * @see cn.jinbyte.web.interceptor.ApiLogInterceptor
 */
@Documented
@Target(value = {ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiLog {
    /**
     * 访问日志记录类型
     */
    ApiLogType value() default ApiLogType.ACCESS;

    /**
     * 忽略日志
     */
    boolean ignore() default false;

    /**
     * 模块
     */
    String module() default "";

    /**
     * 业务域
     */
    String domain() default "";

    /**
     * 描述
     */
    String description() default "";

    /**
     * 包含信息（在全局配置基础上扩展包含信息）
     */
    LogInclude[] includes() default {};

    /**
     * 排除信息（在全局配置基础上减少包含信息）
     */
    LogInclude[] excludes() default {};

}
